#pragma once

namespace AVUI
{

/// <summary>Defines a mechanism for retrieving a service object; that is, an object that provides custom support to other objects.</summary>
class IServiceProvider
{
public:
    /// <summary>Gets the service object of the specified type.</summary>
    /// <returns>A service object of type serviceType.-or- null if there is no service object of type serviceType.</returns>
    /// <param name="serviceType">An object that specifies the type of service object to get. </param>
    virtual TRefCountedPtr<Object> GetService(const Type* pServiceType) = 0;
};

};



